

#ifndef TVerbindungsListeH
#define TVerbindungsListeH

#include "TVerbindung.h"
#include <vector>
#include <algorithm>
class TVerbindung;

 /**
 *
 *  @brief Enthaelt alle Verbindungen der Schaltung
 *
 *  @author Lukas Dudichum
 *  @date 4.06.2012
 *
 *  @version 0.3
 */
class TVerbindungsListe{

private:
	std::vector<TVerbindung*> verbindungen;
	unsigned int index;

public:

	/** Konstruktor von TGUIMain
	*/
	__fastcall TVerbindungsListe();
	
	/** Destruktor von TGUIMain
	*/
	__fastcall ~TVerbindungsListe();

	
	/**
	*	Fuegt der Liste eine Verbindung hinzu
	*	@param[in] verbindung  Verbindung welche hinzugefuegt werden soll
	*/
	void __fastcall addVerbindung(TVerbindung* verbindung);
	
	/**
	*	Entfernt eine Verbindung 
	*	@param[in] bauelement Bauelment dessen Verbindung entfernt werden soll
	*	@param[in] pin dessen Verbindung entfernt werden soll (Gatter hat mehrere Pins)
	*/
	void __fastcall removeVerbindung(TBauelementGUI* bauelement, Pin pin);
	
	/**
	*	Springt in der Liste ein Element weiter
	*/
	void __fastcall next();
	
	/**
	*	Springt an den Anfang der Liste
	*/
	void __fastcall begin();
	
	/**
	*	Liefert die aktuelle Verbindung
	* 	@return Gibt Verbindung des aktuellen Elements zurueck
	*/
	TVerbindung* __fastcall TVerbindungsListe::getVerbingungen();
	
	/**
	*	Liefert aktuelle Groesse der Liste
	* 	@return Groesse der Liste
	*/
	unsigned int __fastcall TVerbindungsListe::getSize();
	
	/**
	*	Liefert die aktuelle Verbindung
	* 	@return Gibt Verbindung des aktuellen Elements zurueck
	*/
	TVerbindung* __fastcall TVerbindungsListe::getItem();
};

#endif
